package proyecto0.src.directorio;

import java.awt.Color;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.BevelBorder;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

import java.awt.*;
import java.awt.event.*;

import javax.swing.JTextArea;
public class GUI_got extends JFrame {
   //atributos
	private JPanel contentPane;
	
	private JButton btnCargarDirectorio;
	private JButton btnComenzar;
	private JButton btnIdioma;
	private JButton button;
	private JLabel lblPalabras ;
	private JOptionPane dialogo;
	private JTextArea textArea;
	private JPanel panelBotones;
	private boolean idiomaEspanol=true;
	
	private Proyecto0 archivo;
	private JPanel panel;
	private JPanel panel_1;
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					GUI_got frame = new GUI_got("Winter is Coming");
					frame.setVisible(true);
					frame.setLocationRelativeTo(null);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public GUI_got(String n) {
		super(n);
		iniGUI();		
	}

	private void iniGUI() {
		TitledBorder borde = new TitledBorder (new LineBorder (Color.WHITE,2,true),"");	
		Border raisedbevel = BorderFactory.createRaisedBevelBorder();
		Border loweredbevel = BorderFactory.createLoweredBevelBorder();
		Border comp= BorderFactory.createCompoundBorder( raisedbevel, loweredbevel);		
		setBounds(100, 100, 233, 345);
		
		contentPane = new JPanel();		
		contentPane.setForeground(new Color(204, 255, 255));
		contentPane.setBorder(borde);
		contentPane.setBackground(new Color(255, 255, 255));
		contentPane.setLayout(null);
		setContentPane(contentPane);		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		dialogo=new JOptionPane();
		
		panel = new JPanel();
		
		panel.setForeground(SystemColor.menu);
		panel.setBackground(Color.WHITE);
		
		panel.setBounds(6, 122, 205, 18);
		contentPane.add(panel);
		
		lblPalabras = new JLabel("Palabras:");
		panel.add(lblPalabras);
		lblPalabras.setBackground(new Color(0, 0, 51));
		lblPalabras.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblPalabras.setForeground(new Color(0, 0, 51));
		lblPalabras.setHorizontalAlignment(JLabel.CENTER);
		lblPalabras.setVerticalAlignment(JLabel.CENTER);
		
		panelBotones = new JPanel();
		panelBotones.setBounds(4, 4, 208, 117);
		panelBotones.setBackground(new java.awt.Color(119,210,255));
		panelBotones.setBorder(comp);
		panelBotones.setLayout(null);
		contentPane.add(panelBotones);
		
				
		btnCargarDirectorio = new JButton("Cargar directorio");
		btnCargarDirectorio.setBounds(42, 11, 128, 28);
		panelBotones.add(btnCargarDirectorio);
		btnCargarDirectorio.setForeground(new Color(0, 0, 51));
		btnCargarDirectorio.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
		
		
		btnComenzar = new JButton("Comenzar");
		btnComenzar.setBounds(42, 47, 128, 28);
		panelBotones.add(btnComenzar);
		btnComenzar.setEnabled(false);
		btnComenzar.setForeground(new Color(0, 0, 51));
		btnComenzar.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
		
		btnIdioma = new JButton("Idioma");
		btnIdioma.setBounds(42, 79, 128, 28);
		panelBotones.add(btnIdioma);
		btnIdioma.setForeground(new Color(0, 0, 51));
		btnIdioma.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
		
		panel_1 = new JPanel();
		panel_1.setLayout(null);
		panel_1.setBackground(new Color(119, 210, 255));
		panel_1.setBounds(4, 140, 208, 160);
		panel_1.setBorder(comp);
		panel_1.setLayout(null);
		contentPane.add(panel_1);
		
		 textArea = new JTextArea();
		 textArea.setBounds(13, 11, 183, 108);
		 panel_1.add(textArea);
		 		 
		 button = new JButton("reiniciar");		
		 button.setBounds(114, 130, 84, 19);
		 panel_1.add(button);
		 
		 button.setEnabled(false);
		 button.setBorder(borde);
		
		
		
		//creamos oyentes y los agregamos
		OyenteP oyenteP = new OyenteP();
		OyenteDirectorio oyenteD=new OyenteDirectorio();
		OyenteReinicio oyenteR= new OyenteReinicio();
		OyenteComenzar OyenteC= new OyenteComenzar();
		btnIdioma.addActionListener(oyenteP);
		btnComenzar.addActionListener(OyenteC);
		btnCargarDirectorio.addActionListener(oyenteD);
		button.addActionListener(oyenteR);
		
		
	
	}public void activarBotones(){
		btnComenzar.setEnabled(true);
		button.setEnabled(true);
		btnCargarDirectorio.setEnabled(false);	
	}
	
	public void desactivarBotones(){
		btnComenzar.setEnabled(false);
		button.setEnabled(false);
		btnCargarDirectorio.setEnabled(true);
	}
	


class OyenteP implements ActionListener {
	public void actionPerformed(ActionEvent event){
		String opcion1="Español";
		String opcion2="Inglés";
		String frase1="Seleccionar idioma."; 
		String frase2= "Selector de opciones";
				
		if(!idiomaEspanol){//modificar las variabls anteriores
			opcion1 ="Spanish";
			opcion2 = "English";
			frase1 = "Select Language";
			frase2 = "Options selector";
			
			}		
		String [] op = {opcion1,opcion2}; 		
		int opSel = JOptionPane.showOptionDialog(null, frase1,frase2,  JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE, null,op, opcion1);
				 if(opSel != 0){
					 idiomaEspanol=false;
					 btnCargarDirectorio.setText("Load path");
					 btnComenzar.setText("Start");
					 btnIdioma.setText("Language");
					 button.setText("Restart");
					 lblPalabras.setText("Words:");
					 panelBotones.setBackground(new Color(41, 163, 184));
					 panel_1.setBackground(new Color(41, 163, 184));					
					 }
				 else{
					 idiomaEspanol=true;
					 btnCargarDirectorio.setText("Cargar directorio");
					 btnComenzar.setText("Comenzar");
					 btnIdioma.setText("Idioma");
					 button.setText("Reiniciar");
					 lblPalabras.setText("Palabras:");
					 panelBotones.setBackground(new Color(119, 210, 255));
					 panel_1.setBackground(new Color(119, 210, 255));
					}
				 }
}
class OyenteDirectorio implements ActionListener {
	public void actionPerformed(ActionEvent event){
		String cad ; String frase1=""; String frase2="";
		try {
			
			dialogo = new JOptionPane(); 
			if(idiomaEspanol) {
				frase1="Ingrese ruta del directorio Ej: 'C:/Users/AMD/Documents/uni/TdC'";
				frase2="Directorio inválido";
			}
			else{
				frase1="Enter folder path e.g.: 'C:/Users/AMD/Documents/uni/TdC'";
				frase2="Invalid path";
			}
			cad = dialogo.showInputDialog(null, frase1,"" );
			if (cad != null) {
				if (!cad.equals("")){  
					activarBotones();
					archivo= new Proyecto0();
					archivo.inicializarFichero(cad);
				}
				else {
					dialogo.showMessageDialog (null,frase2);
				}
			}
		}
		catch(InvalidPathException ex) {
			dialogo.showMessageDialog (null,frase2);
			desactivarBotones();
		}
	}
}

class OyenteReinicio implements ActionListener {
	public void actionPerformed(ActionEvent event){
		desactivarBotones();
		textArea.setText("");
	}
}

class OyenteComenzar implements ActionListener {
	public void actionPerformed(ActionEvent event){
		String salida="";
		for(String str : archivo.palabrasMasFrecuentes()){
			if(str!=null)salida= str + " \n" + salida ;
		}
		textArea.setText(salida);

	}
}
}